<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- 
        1.this是什么？
            *任何函数本质上都是通过某个对象来调用的,如为没有直接指定就是window
            *所有函数内部都有一个变量this
            *它的值是调用函数的当前对象
 
        2.如何确定this的值？
            *test() :  window
            *p.test() : p
            *new test() : 新创建的对象
            *p.call(obj) : obj
     -->
     <script>
        function Preson(color){
            console.log(this)
            this.color = color;
            this.getColor = function(){
                console.log(this)
                return this.color
            };
            this.setColor = function(){
                console.log(this)
                this.color = color
            };
        }

        Preson('red');   //  this是  window
        var p = new Preson('yellow');   // this是  p
        p.getColor();    //  this是  p

        var obj = {};
        p.setColor.call(obj,'black');   //this 是  obj

        var test = p.setColor;
        test();     // this 是  window

        function fn1(){
            function fn2(){
                console.log(this);
            }
            fn2();   // this 是 window
        }
        fn1();   // this 是 window
     </script>
</body>
</html>